/*
 * 全局loading遮罩控制类
 * 使用示例：
 * 引用：
 * import  LoadingSingleton  from '@/hooks/singleLoading';
 * const loading = LoadingSingleton.getInstance();
 * 开启loading: loading.show();
 * 关闭：请求响应后自动关闭，无需处理
 */
class SingletonLoading {
  // 静态实例变量，用于存储唯一的实例
  private static instance: SingletonLoading | null = null
  // 全局遮罩dom对象loading-mask
  private dom: any
  private textDom: any

  // 私有构造函数，防止外部通过 new SingletonLoading() 创建实例
  private constructor() {
    // 可以在这里添加初始化代码
    this.dom = document.getElementById('loading-mask')
    this.textDom = document.getElementById('loadText')
  }

  // 静态方法，用于获取实例
  public static getInstance(): SingletonLoading {
    if (!SingletonLoading.instance) {
      SingletonLoading.instance = new SingletonLoading()
    }
    return SingletonLoading.instance
  }

  /**
   * 显示全局loading
   * @param text 提示文本，可为空
   */
  show(text?: string): void {
    this.dom ? (this.dom.style.display = 'block') : ''
    if (text) {
      this.textDom && text ? (this.textDom.innerText = text) : ''
    }
  }
  /** 关闭全局loading */
  close(): void {
    this.dom ? (this.dom.style.display = 'none') : ''
  }
}

export default SingletonLoading
